package com.tbit.main.dao.core;

import com.tbit.main.pojo.GeoreMachine;
import com.tbit.main.pojo.MachineAbnormal;
import com.tbit.main.pojo.MachineStatus;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author LMY
 * @create 2021-06-29 14:16
 * 分区车辆绑定
 */
public interface GeoreMachineDao {
    /**
     * 根据车辆id查询绑定
     *
     * @param machineId
     * @return
     */
    GeoreMachine getByMachineId(Integer machineId);

    /**
     * 根据车辆ids查询绑定
     *
     * @param machineIds
     * @return
     */
    List<GeoreMachine> getByMachineIds(@Param("machineIds") String machineIds);

    /**
     * 批量更新
     *
     * @param georeMachines
     */
    void updateBatch(List<GeoreMachine> georeMachines);

    /**
     * 批量插入
     *
     * @param georeMachines
     */
    void insertBatch(List<GeoreMachine> georeMachines);

    /**
     * 流入
     *
     * @param map
     * @return
     */
    List<Map<String, Object>> intoMachine(Map<String, Object> map);

    /**
     * 流出
     *
     * @param map
     * @return
     */
    List<Map<String, Object>> outMachine(Map<String, Object> map);

    /**
     * 获取车辆总数
     *
     * @param regionId
     * @return
     */
    List<Map<String, Object>> getMachine(@Param("regionId") String regionId);

    /**
     * 获取车辆总数
     *
     * @param regionId
     * @return
     */
    Integer getRegionIdMachine(Integer regionId);

    /**
     * 获取故障车辆
     *
     * @param regionId
     * @return
     */
    List<Map<String, Object>> getFault(@Param("regionId") String regionId);

    /**
     * 获取闲置车辆
     *
     * @param map
     * @return
     */
    List<Map<String, Object>> getBorrow(Map<String, Object> map);

    /**
     * 获取异常车辆
     *
     * @param regionId
     * @return
     */
    List<Map<String, Object>> getAbnormal(@Param("regionId") String regionId);

    /**
     * 获取异常车辆
     *
     * @param regionId
     * @return
     */
    List<MachineAbnormal> getRegionIdAbnormal(Integer regionId);

    /**
     * 获取缺电
     *
     * @param map
     * @return
     */
    List<Map<String, Object>> getPower(Map<String, Object> map);

    /**
     * 获取缺电
     *
     * @param map
     * @return
     */
    List<MachineStatus> getRegionIdPower(Map<String, Object> map);

    /**
     * 获取不存在状态车辆
     *
     * @return
     */
    List<Integer> getNotStatus();

    /**
     * 删除不存在状态的车辆
     */
    void deleteStatus(@Param("machineId") String machineId);

    /**
     * 获取不存在分区id
     *
     * @return
     */
    List<Integer> getNotRegionId();

    /**
     * 删除不存在分区车辆
     *
     * @param regionId
     */
    void deleteRegionId(@Param("regionIds") String regionId);

    /**
     * 获取所有
     *
     * @return
     */
    List<Map<String, Object>> getAll();

    /**
     * 删除绑定分区信息
     * @param machineIds machineIds
     */
    void deleteByMachineIds(@Param("machineIds") List<Integer> machineIds);
}
